package com.gf.event.service;

import com.gf.base.type.EventType;
import com.gf.common.bean.Page;

public interface EventService {

	/**
	 * 增加用户事件
	 * 
	 * @param userId
	 * @param userName
	 * @param operation
	 *            ："发布了""修改了" "关注了"
	 * @param title
	 *            :18岁人的性格调查
	 * @param targetId
	 *            ： 这个项目的ID
	 * @param eventType
	 * @return
	 */
	public long addEvent(long userId, String userName, String operation,
			String title, long targetId, EventType eventType);

	/**
	 * 得到某用户的事件<br>
	 * 按时间倒序返回
	 * @param userId
	 * @param currentPage
	 * @param pageSize
	 * @return
	 */
	public Page getEventsByUserId(long userId, int currentPage,
			int pageSize);

	/**
	 * 得到自己关注的人的动态事件<br>
	 * 按时间倒序返回
	 * 
	 * @param userId
	 * @param currentPage
	 * @param pageSize
	 * @return
	 */
	public Page getEventsOfIdols(long userId, int currentPage, int pageSize);

	/**
	 * 跟发布项目有关的事件
	 * 
	 * @param userId
	 * @param userName
	 * @param title
	 *            该项目对应的title
	 * @param targetId
	 *            该项目对应的ID
	 * @return
	 */
	public long publishProjectEvent(long userId, String userName, String title,
			long targetId);

	/**
	 * 用户参与某个项目的事件
	 * 
	 * @param userId
	 * @param userName
	 * @param title
	 * @param targetId
	 *            用户所做项目的ID
	 * @return
	 */
	public long joinProjectEvent(long userId, String userName, String title,
			long targetId);

	/**
	 * 用户关注了谁
	 * 
	 * @param userId
	 * @param userName
	 * @param idolname
	 * @param targetId
	 * @return
	 */
	public long attentionEvent(long userId, String userName, String idolname,
			long targetId);

	/**
	 * 得到所有用户的动态事件<br>
	 * 用于显示最新动态<br>
	 * 按时间降序返回
	 * 
	 * @param curpage
	 * @param pageSize
	 * @return
	 */
	public Page getAllEvents(int curpage, int pageSize);

	/**
	 * 更新该用户事件中头像信息
	 * @param userId
	 * @param newPortrait
	 * @return
	 */
	public int changePortrait(long userId,String newPortrait);
	/**
	 * 得到最近的答题记录
	 * @param curpage
	 * @param pageSize
	 * @return
	 */
	public Page getqueryRecentEvent(int curpage, int pageSize);
	
	
	/**
	 * 删除相应的动态事件
	 * @param targetId
	 * @param eventType
	 */
	public boolean deleteProjectEvent(long projectId);
}
